package cn.tedu.search.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;

@Data
@Accessors(chain = true)     // 支持链式set赋值功能
@AllArgsConstructor          // 自动生成包含全部参数的构造方法
@NoArgsConstructor           // 自动生成无参构造方法
// @Document是SpringDataES标记实体类的注解
// indexName指定关联的索引名称,运行时如果items索引不存在,SpringData会自动将它创建出来
@Document(indexName = "items")
public class Item implements Serializable {

    // SpringData标记当前属性为ES的主键
    @Id
    private Long id;
    // SpringData标记title属性是text类型支持分词的,以及分词器
    @Field(type = FieldType.Text,
                    analyzer = "ik_max_word",
                    searchAnalyzer = "ik_max_word")
    private String title;       // 商品名称
    // Keyword类型是不需要分词的字符串类型
    @Field(type = FieldType.Keyword)
    private String category;    // 商品分类
    @Field(type = FieldType.Keyword)
    private String brand;       // 品牌
    @Field(type = FieldType.Double)
    private Double price;       // 价格
    //  图片地址不会成为搜索条件,所以设置index = false
    //  这样ES就不会为它创建索引库了,能够节省空间
    @Field(type = FieldType.Keyword,index = false)
    private String imgPath;     // 图片地址

    // images/1a123s-as4td-asdsa-jasbdjff.png


}
